home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / tos_updt / fmcity / palcom / auto / script / automain.mx < prev    next >
Text File  |  1995-02-10  |  10KB  |  336 lines

  1. //--------------------------------------------------------------------------//
  2. //                        PALCOM V2.1 L10                        //
  3. //                   自動通信:自動通信メインスクリプト                    //
  4. //                                                                            //
  5. //                                        CopyRight(C) 1994/10/20                //
  6. //                                FUJITSU PERSONAL COMPUTER SYSTEMS LIMITED    //
  7. //                                        written by C-cube Soft T.Nakamura    //
  8. //--------------------------------------------------------------------------//
  9. event    @OPEN.EXTERN {
  10.     sys.pushCursor( 81 );
  11.  
  12.     //---   ライブラリファイル(AUTOLIB.MX) が読み込まれているかどうか   ---//
  13.     //---                  チェックし、読み込まれていなければ読み込む   ---//
  14.     $flg = 0;
  15.     foreach( $a, script.status( #EXTERN, 1 )) {
  16.         $fileName = list.getLast( str.split( $a, "\\" ));
  17.         if( $fileName == "AUTOLIB.MX" ) {
  18.             $flg = 1;
  19.             exit;
  20.         }
  21.     }
  22.     if( $flg == 0 ) {
  23.         script.openExtern( str.join([$$DIR.STANDARD,
  24.                                      "AUTO\\SCRIPT\\AUTOLIB.MX"], "" ),
  25.                            #TRUE,
  26.                            [[],
  27.                             "    NIFTY-Serve 自動通信スクリプト V1.0 L10  ",
  28.                             "",
  29.                             "              COPYRIGHT (C) 1995             ",
  30.                             " FUJITSU & FUJITSU PERSONAL COMPUTER SYSTEMS ",
  31.                             []] );
  32.         dialog.close();
  33.     }
  34.  
  35.     //---   自動通信設定の読み込み   ---//
  36.     $path = str.join([$$DIR.STANDARD, "BBS\\AUTOTRAN.ENV"],"" );
  37.     if( file.exist( $path ) == #FALSE ) {
  38.         $saveXsize = dialog.getDefaultXSize();
  39.         dialog.setDefaultXSize( 292 );
  40.         sys.pushCursor( 80 );
  41.         $ret = dialog.ask([
  42.                     "━━━━━━━━  自動通信  ━━━━━━━━",
  43.                     "",
  44.                     "    自動通信の環境が設定されていません。    ",
  45.                     ""],["中止","続行"] );
  46.         sys.popCursor();
  47.         dialog.setDefaultXSize( $saveXsize );
  48.         if( $ret == 0 ) {
  49.             return;
  50.         }
  51.     }
  52.     if(( $ret = local.loadAutoEnv( $path, "", #TRUE, 0, 0 )) == #FALSE ) {
  53.         return;
  54.     }
  55.     AUTO.setDefaultData( $ret );
  56.  
  57.     //---   データベースファイルを読み込む   ---//
  58.     AUTO.openDBfile();
  59.  
  60.     //---   メインループ   ---//
  61.     $exitFlg = 0;
  62.     loop {
  63.         //---   設定選択ダイアログの表示   ---//
  64.         if( Auto.selectDialog() == #FALSE ) {
  65.             if( $exitFlg == -1 ) {                // 新規作成で取り消された場合
  66.                 exit;
  67.             }
  68.             $exitFlg = -1;
  69.             goto SET_NEWMAKE;
  70.         }
  71.  
  72.         //---   復帰値の判定&処理   ---//
  73.         table( AUTO.getDialogReturn()) {
  74.             else    { $exitFlg = 1;    }            // エラー
  75.             0        { $exitFlg = 1;    }            // 終了
  76.             1        {                            // 実行
  77.                 AUTO.setErrorFlg( #FALSE );
  78.                 $path = str.join([$$DIR.STANDARD,
  79.                                   "AUTO\\SCRIPT\\SETLOAD.MX"], "" );
  80.                 script.openExtern( $path, #FALSE, [] );
  81.                 $path = str.join([$$DIR.STANDARD,
  82.                                   "AUTO\\SCRIPT\\AUTOCOM.MX"], "" );
  83.                 script.openExtern( $path, #FALSE, [] );
  84.                 if( AUTO.getErrorFlg() == #TRUE ) {
  85.                     $path = str.join([$$DIR.STANDARD,
  86.                                       "AUTO\\SCRIPT\\AUTOERR.MX"], "" );
  87.                     script.openExtern( $path, #FALSE, [] );
  88.                 }
  89.             }
  90.             2        {                            // 編集
  91.                 $path = str.join([$$DIR.STANDARD,
  92.                                   "AUTO\\SCRIPT\\SETLOAD.MX"], "" );
  93.                 script.openExtern( $path,  #FALSE, [] );
  94.                 $path = str.join([$$DIR.STANDARD,
  95.                                   "AUTO\\SCRIPT\\AUTOEDIT.MX"], "" );
  96.                 script.openExtern( $path, #FALSE, [] );
  97.                 if( AUTO.getDialogReturn() == 1 ) {
  98.                     //---   設定の場合、ファイルに出力する   ---//
  99.                     $path = str.join([$$DIR.STANDARD,
  100.                                       "AUTO\\SCRIPT\\SETSAVE.MX"], "" );
  101.                     script.openExtern( $path, #FALSE, [] );
  102.                 }
  103.             }
  104.             3        {                            // 新規作成
  105. SET_NEWMAKE :    $autoSetName     = list.getNth( AUTO.getSetName(), 1 );
  106.                 $autoSetFileName = list.getNth( AUTO.getSetName(), 2 );
  107.                 AUTO.setSetName( "", "" );
  108.                 AUTO.setSetData( [
  109.                     [[0,3,10],[#FALSE,#FALSE],[#FALSE,#FALSE,#FALSE,#FALSE],
  110.                      [#FALSE,#FALSE],[#FALSE,#FALSE],[#FALSE],[#FALSE,#FALSE],
  111.                      [#FALSE,#FALSE],[#UNKNOWN,0],[#UNKNOWN,0],[""]
  112.                     ],
  113.                     [],
  114.                     [],
  115.                     [],
  116.                     []
  117.                 ] );
  118.                 $path = str.join([$$DIR.STANDARD,
  119.                                   "AUTO\\SCRIPT\\AUTOEDIT.MX"], "" );
  120.                 script.openExtern( $path, #FALSE, [] );
  121.                 if( AUTO.getDialogReturn() == 0 ) {
  122.                     AUTO.setSetName( $autoSetName, $autoSetFileName );
  123.                 } elif( AUTO.getDialogReturn() == 1 ) {
  124.                     $path = str.join([$$DIR.STANDARD,
  125.                                       "AUTO\\SCRIPT\\SETSAVE.MX"], "" );
  126.                     script.openExtern( $path, #FALSE, [] );
  127.                 }
  128.             }
  129.         }
  130.         //---   終了?   ---//
  131.         if( $exitFlg == 1 ) {
  132.             exit;
  133.         }
  134.     }
  135.  
  136.     AUTO.closeDBfile();
  137.     local.restoreAutoEnv();
  138.     AUTO.freeData();
  139.     return;
  140. }
  141. event    @CLOSE.EXTERN{
  142.     sys.popCursor();
  143.     return;
  144. }
  145. event    @ERROR    {
  146.     local.errorFunc();
  147.     event.mainLoop();
  148. }
  149.  
  150.  
  151.  
  152. //--------------------------------------//
  153. //---   設定の選択ダイアログの制御   ---//
  154. //--------------------------------------//
  155. function    Auto.selectDialog() {
  156.     $dataList     = Auto.getAutoNameList();
  157.     $autoNameList = list.getNth( $dataList, 2 );
  158.     $fileNameList = list.getNth( $dataList, 1 );
  159.  
  160.     //---   設定ファイルが1つも無い場合、新規作成をさせる   ---//
  161.     if( list.size( $fileNameList ) == 0 ) {
  162.         return( #FALSE );
  163.     }
  164.  
  165.     //---   前回選択された物をデフォルトの選択状態にする   ---//
  166.     $defList = [1];
  167.     $fileName = list.getNth( AUTO.getSetName(), 2 );
  168.     $i = 1;
  169.     foreach( $a, $fileNameList ) {
  170.         if( $fileName == $a ) {
  171.             $defList = [$i];
  172.         }
  173.         $i = $i + 1;
  174.     }
  175.  
  176.     //---   ボタンの設定   ---//
  177.     $delBtnId    = dialog.makeButton( 1, "削除",     0, 0x007F );
  178.     $cancelBtnId = dialog.makeButton( 1, "終了",     0, 0x801D );
  179.     $setBtnId    = dialog.makeButton( 1, "実行",     0, 0x8012 );
  180.     $editBtnId   = dialog.makeButton( 1, "編集",     0,      0 );
  181.     $newBtnId    = dialog.makeButton( 1, "新規作成", 0,      0 );
  182.  
  183.     //---   ダイアログ構成リストの設定   ---//
  184.     $dialogList = ["自動通信設定の選択", 0, -1, -1, $setBtnId,
  185.                     ["", 1028,   [40,10,0], $autoNameList, $defList],
  186.                     ["", $cancelBtnId, [0], [""],              [""]],
  187.                     ["", $setBtnId,    [0], [""],              [""]],
  188.                     ["", $editBtnId,   [0], [""],              [""]],
  189.                     ["", $delBtnId,    [0], [""],              [""]],
  190.                     ["", $newBtnId,    [0], [""],              [""]]];
  191.  
  192.     //---   ダイアログ表示   ---//
  193. DIALOG_OPEN:
  194.     sys.pushCursor( 80 );
  195.     dialog.open( $dialogList );
  196.     sys.popCursor();
  197.  
  198.     //---   復帰値をチェック&設定   ---//
  199.     $btnNo = list.get1st( $$DIALOG.RETURN );
  200.     $no    = list.get1st( list.getNth( $$DIALOG.RETURN, 2 ));
  201.  
  202.     //---   選択されていないと実行出来ない物のチェック   ---//
  203.     if(( $no == -1 )&&(( $btnNo == $editBtnId )||( $btnNo == $delBtnId ))) {
  204.         goto DIALOG_OPEN;
  205.     }
  206.  
  207.     //---   復帰値のチェック   ---//
  208.     table( $btnNo ) {
  209.         $delBtnId       {
  210.             if( Auto.delete( list.getNth( $autoNameList, $no ),
  211.                              list.getNth( $fileNameList, $no )) == 0 ) {
  212.                 list.delNth( $autoNameList, $no );
  213.                 list.delNth( $fileNameList, $no );
  214.                 if( $no > list.size( $autoNameList )) {
  215.                     $no = $no - 1;
  216.                 }
  217.                 list.del1st( $defList );
  218.                 list.put1st( $defList, $no );
  219.             }
  220.             goto DIALOG_OPEN;
  221.         }
  222.         $cancelBtnId    { $btnNo =  0; }
  223.         $setBtnId        { $btnNo =  1; }
  224.         $editBtnId        { $btnNo =  2; }
  225.         $newBtnId        { $btnNo =  3; }
  226.         else            { $btnNo = -1; }
  227.     }
  228.     AUTO.setDialogReturn( $btnNo );
  229.  
  230.     //---   「編集」及び「設定」の場合、                ---//
  231.     //---                ファイル名・設定名を設定する   ---//
  232.     if(( $btnNo == 1 )||( $btnNo == 2 )) {
  233.         AUTO.setSetName( list.getNth( $autoNameList, $no ),
  234.                                           list.getNth( $fileNameList, $no ));
  235.     }
  236.  
  237.     //---   後始末   ---//
  238.     dialog.delButton( $cancelBtnId );
  239.     dialog.delButton( $setBtnId    );
  240.     dialog.delButton( $editBtnId   );
  241.     dialog.delButton( $newBtnId    );
  242.     dialog.delButton( $delBtnId    );
  243.  
  244.     return( #TRUE );
  245. }
  246.  
  247.  
  248.  
  249. //------------------------------------//
  250. //---   設定ファイルリストの獲得   ---//
  251. //------------------------------------//
  252. function    Auto.getAutoNameList() {
  253.     $fileNameList = [];
  254.     $setNameList  = [];
  255.  
  256.     //---   AUTO ディレクトリのファイルリストを獲得   ---//
  257.     $dir = str.join([$$DIR.STANDARD, "AUTO"], "" );
  258.     $dirList = file.listDir( $dir, #FALSE, #FALSE );
  259.     foreach( $fileName, $dirList ) {
  260.         //---   .SET のファイルのみを処理する   ---//
  261.         if( str.match( $fileName, ".SET", 0 ) == -1 ) {
  262.             continue;
  263.         }
  264.  
  265.         //---   1行目の識別子を読み込み、チェック   ---//
  266.         $id = file.open( $fileName, "", 1 );
  267.         $str = file.getString( $id );
  268.         if( $str == "--- AUTO-SET-FILE ---\n" ) {
  269.             //---   設定名を読み込む   ---//
  270.             $str = str.replaceAll( file.getString( $id ), "\n", "" );
  271.             list.putLast( $fileNameList, $fileName );
  272.             list.putLast( $setNameList,  $str      );
  273.         }
  274.         file.close( $id );
  275.     }
  276.     return( [$fileNameList, $setNameList] );
  277. }
  278.  
  279.  
  280.  
  281. //------------------------------//
  282. //---   設定ファイルの削除   ---//
  283. //------------------------------//
  284. function    Auto.delete( $name, $setName ) {
  285.     $dir = str.join( list.delLast( str.split( $setName, "\\" )), "\\" );
  286.     $tmp = [file.autoName( $dir, 0 )];
  287.     $str = str.join(["【",$name,"】"], "" );
  288.  
  289.     $errName = str.join( list.delLast( str.split( $setName, "." )), "." );
  290.     $errName = str.join( [$errName, ".ERR"], "" );
  291.  
  292.     //---   ボタンの設定   ---//
  293.     $canBtnId = dialog.makeButton( 1, "取消", 0, 0x8011 );
  294.     $setBtnId = dialog.makeButton( 1, "実行", 0, 0x8012 );
  295.  
  296.     //---   ダイアログ構成リストの設定   ---//
  297.     $dialogList = [
  298.             "━━━━━━  自動通信設定の削除  ━━━━━━",
  299.                                                          0, -1, -1, $setBtnId,
  300.             ["",      1024, [0], [""],                     [""]],
  301.             ["",      1024, [2], [$str],                   [""]],
  302.             ["",      1024, [1], ["の設定を削除します。"], [""]],
  303.             ["",      1024, [0], [""],                     [""]],
  304.             ["", $canBtnId, [0], [""],                     [""]],
  305.             ["", $setBtnId, [0], [""],                     [""]]
  306.     ];
  307.  
  308.     //---   ダイアログの表示   ---//
  309.     $saveXsize = dialog.getDefaultXSize();
  310.     dialog.setDefaultXSize( 300 );
  311.     sys.pushCursor( 80 );
  312.     dialog.open( $dialogList );
  313.     sys.popCursor();
  314.     dialog.setDefaultXSize( $saveXsize );
  315.  
  316.     //---   設定の場合は、対象のファイルを削除する   ---//
  317.     $btnNo = list.get1st( $$DIALOG.RETURN );
  318.     if( $btnNo == $setBtnId ) {
  319.         if( file.exist( $setName ) == #TRUE ) {
  320.             file.delete( $setName );
  321.         }
  322.         if( file.exist( $errName ) == #TRUE ) {
  323.             file.delete( $errName );
  324.         }
  325.         $ret =  0;
  326.     } else {
  327.         $ret = -1;
  328.     }
  329.  
  330.     //---   後始末   ---//
  331.     dialog.delButton( $canBtnId );
  332.     dialog.delButton( $setBtnId );
  333.  
  334.     return( $ret );
  335. }
  336.